package com.kakarote.core.entity;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;

/**
 * <p>
 * 用户表
 * </p>
 *
 * @author zhangzhiwei
 * @since 2020-04-27
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class UserInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 用户名
     */
    private String username;

    /**
     * 头像
     */
    private String img;

    /**
     * 手机
     */
    private String phone;

    /**
     * 岗位
     */
    private String post;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 用户昵称
     */
    private String realname;

    /**
     * 部门ID
     */
    private Long deptId;

    /**
     * 部门名称
     */
    private String deptName;

    /**
     * 用户状态
     */
    private Integer status;

    /**
     * 用户上级名称
     */
    private String parentName;

    /**
     * 上级用户ID
     */
    private Long parentId;

    /**
     * 企业ID
     */


    /**
     * 企业名称
     */
    private String companyName;

    /**
     * 登录类型
     */
    private Integer loginType = 1;

    @ApiModelProperty(value = "类型 1 pc 2 mobile ", allowableValues = "1,2")
    private Integer type = 1;

    /**
     * 访问类型
     */
    private Integer accessType;


    /**
     * 当前用户角色列表
     */
    private List<Long> roles;

    /**
     * 当前企业创建人用户ID
     */
    private Long superUserId;

    /**
     * 当前企业超管角色ID
     */
    private Long superRoleId;

    /**
     * 微信(飞书、钉钉)用户ID
     */
    private String wxUserId;

    /**
     * 微信OpenId（钉钉unionId）
     */
    private String wxOpenId;

    /**
     * 是否企业微信用户
     *
     * @return true为企业微信用户
     */
    public boolean isWxUser() {
        return Objects.equals(3, getLoginType()) || Objects.equals(4, getLoginType());
    }

    /**
     * 是否为钉钉用户
     *
     * @return
     */
    public boolean isDingtalkUser() {
        return Objects.equals(7, getLoginType()) || Objects.equals(8, getLoginType());
    }

    /**
     * 是否飞书用户
     *
     * @return true为飞书用户
     */
    public boolean isFlyUser() {
        return Objects.equals(6, getLoginType());
    }

    /**
     * 员工邮箱
     */
    private String email;
}
